perm filename ITMSUB.F4[XX,LCS]1 blob sn#166879 filedate 1975-07-04 generic text, type T, neo UTF8
00100	C**** ITMSUB, BMS, METER, RNOTE, MAKNUM, IABS, DRWNT, RHORZ, RDRAW
00200	C  ********** WHOLE & HALF RESTS, BEAMS ******
00300		SUBROUTINE ITMSUB
00400		IMPLICIT INTEGER(A-Q,S-Z)
00500		REAL DIS,PWDS,DISX,HGT,POS,CENTR,STFF,HGT1
00600		COMMON/STF/RSTFAC(-3/4),RSTJ2/MIN/MINI,RMINI
00700		COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20)/BM/RA,RC,RJY
00800		COMMON/POSI/STFF(-3/4),JJ2,POS/PLTR/PLT,RHT,DIS
00900		COMMON/ALF/QQ(3),RST7,RST18,R3Q,JY,RD,RX,RW,RJX,RJ,L,K,
01000		1 RJA,YY,DISX,HGT,RZ,INP(53)
01100		EQUIVALENCE (J3,JQ(1)),(J4,JQ(2)),(J5,JQ(3)),(R5,RJQ(3))
01200		1,(R6,RJQ(4)),(J7,JQ(5)),(J8,JQ(6)),(J9,JQ(7)),(J10,JQ(8))
01300		1,(J11,JQ(9)),(J6,JQ(4)),(R9,RJQ(7)),(R8,RJQ(6)),(R3,RJQ(1))
01400		1 ,(R7,RJQ(5)),(R4,RJQ(2)),(R9,RJQ(7)),(R10,RJQ(8))
01500		DATA R14/14.54/,RTF/3.0/,RHGT/48.0/,R2HGT/96.0/,RBM/.83/
01510		1,RDBR/5.0/,RBR/.33/,RBX/ 7.0/
01520	C  RDBR IS SPACER FOR DBL BAR.
01600	C  RTF COMPENSATES FOR BAD PLANNING.
01700		RST7=RSTJ2*7.
01800		RST18=RSTJ2*18.
01900	C  TO COMPENSATE FOR NOTE #3 COMING AT POS=0
02000	
02100		R3Q=R3
02200		JY=0
02300		IF(JA.EQ.6)GO TO 90
02400		IF(JA.EQ.8)GO TO 100
02500	C  GO TO LINES, BEAMS, STAVES.
02600	C   NEXT DRAWS STRAIGHT LINES
02700	
02800		RD=R4*RST7
02900		RA=0
03000		RX=RTF*RSTJ2+POS
03020	C  SOMEDAY ADD < RDIS=1./DIS >  TO REPLACE ALL 1./DIS'S
03100		IF(J5.EQ.50)GO TO 300
03150	C  50 IS FOR CRESC., DECRESC. AND BOXES
03200		IF(R6.NE.0)GO TO 401
03250		IF(J7.NE.0)GO TO 401
03400	C  FOR BAR LINES
03500	4000	JA=44
03600	C  CODE # IS CHNGD SO BAR LINES WON'T AFFECT MAX. HGT.
03800	C ↑↑↑↑↑↑↑↑↑ FOR VERTICAL WIGGLE (P6=0, P7=-1)
03850		DBR=0 
03860		IF(J4.LT.1000)GO TO 400
03870	C  J4=1001 = DBL BAR,  =1401 = DBL BAR WITH RT. ONE HEAVY
03880		J4=J4-1000
03890		DBR=-1
03900	400	J7=(J4/100)*DIS
04500		L=MOD(J4,100)+J2-1
04600	C J4=401 MAKES 4X THICK BARLINE - ONE STAFF
04650		RY=RSTFAC(L)
04700		RY=STFF(L)+RTF*RY+RY*56.
04810	1400	RA=1
04820		IF(PLT.GE.0)GO TO 140
04830		J7=J7+1
04840		RA=1./DIS
04850	C  BAR LINES PLOT AS DOUBLE THICKNESS
04860	140	RJX=R3Q
04900	42	CALL LINES(R3Q,RX,3)
05200		RJ=-1.
05300		RW=RY
05400	406	CALL LINES(RJX,RY,2)
05500		IF(J10.EQ.0)GO TO 411
05600	C  P10 WILL THICKEN VERTICAL (OR MOSTLY VERTICAL) LINES.
05700		J7=J10*DIS
05800		J10=0
05900		RA=1./DIS
05910	411	IF(J7.GT.0)GO TO 409
05920		IF(DBR.EQ.0)RETURN
05925		RY=RW
05930		R3Q=R3Q-RDBR
05935		DBR=0
05940		GO TO 1400
06000	CC411	IF(J7.LE.0)RETURN
06100	C  FOR 'HEAVY' LINE.
06200	409	RJX=RJX+RA
06300		CALL LINES(RJX,RY,2)
06400		J7=J7-1
06500		RY=RW
06600		IF(RJ)RY=RX
06700		RJ=-RJ
06800		GO TO 406
06900	CC43	IF(RA.LE.0)RETURN
07100	C   HOW IS RA.NE.0?
07200	C  DRAWS BAR LINES. J4>0 CAUSES FULL LINE.
07300	CC403	RA=RA-3.72
07400	CC	R3Q=R3Q+22
07500	CC	RJX=RJX+22
07600	C   DO ABOVE NEED *RSTJ2? ************
07700	C **** BASED ON '596' ****
07800	CC	GO TO 42
07900	
08000	C  FOR CRESC., DECRESC.
08100	300	IF(R7.EQ.0)R7=2.3
08200		IF(R7.EQ.-1.)R7=-2.3
08300		RA=ABS(R7/2.0)*RST7
08400	C   AMOUNT OF SPREAD
08500		RJ=R3Q
08600		RX=RX-RST18+RD
08700		IF(R8.NE.0)GO TO 302
08800	C  JUMP TO MAKE BOX
08900		R6=RHORZ(R6)
09000		IF(R7)GO TO 301
09100		RJ=R6
09200		R6=R3Q
09300	301	CALL LINX(RJ,RX+RA,R6,RX)
09400		CALL LINES(RJ,RX-RA,2)
09500	C FOR CRESC, DECRESC:4 POS1, STF, HGT, 50, POS1, +OR-N(0=2.3,-1=-2.3)
09600		IF(PLT.NE.-2)RETURN
09700		IF(J8)RETURN
09800		RX=RX+1./DIS
09900		J8=-1
10000	C FOR DOUBLE THICKNESS
10100		GO TO 301
10200	
10300	302	R8=R8*RST7
10400		R9=R9*RST7
10500		IF(R9.EQ.0)R9=R8
10600	C  R9=0 MAKES SQUARE    
10700		R3=R3Q-R8/2.
10800		RX=RX-R9/2.
10900		J10=J10*DIS
11000	C  DRAWS BOX, CENTER IS IN MIDDLE 
11100	C  4,POS,STF,NT#,50,0,0,,SIZ1[BY NT#S],SIZ2
11200	1302	CALL LINX(R3,RX,R3+R8,RX)
11300		CALL LINES(R3+R8,RX+R9,2)
11400		CALL LINES(R3,RX+R9,2)
11500		CALL LINES(R3,RX,2)
11600		IF(J10.EQ.0)RETURN
11700		J10=J10-1
11800		RJ=1./DIS
11900		R3=R3-RJ
12000		R8=R8+RJ+RJ
12100		RX=RX-RJ
12200		R9=R9+RJ+RJ
12300		GO TO 1302
12400	C  TO THICKEN BOXES.
12410	
12420	1401	R4=2.0
12440	C FOR HEAVY BRACK.
12450		RA=RSTJ2*RBX
12460		RX=RX-RA
12470	C  THE BOTTOM
12480		L=J4+J2-1
12485		RA=STFF(L)
12487	C SAVE FOR POS. OF BRACK. END ON UPPER STAFF.
12490		RJY=RSTFAC(L)
12500		RY=RA+RTF*RJY+RJY*56.+RJY*RBX
12510	C  THE TOP
12525		R5=9.5
12530		GO TO 2401
12540	
12600	C  DASHES
12700	401	POS=POS-RST18
12800	C********* 27/9/72 ******
12900		IF(J7.LE.0)GO TO 407
12910		IF(J7.EQ.4)GO TO 1401
12950		IF(J7.NE.3)GO TO 4001
12960	C  NEXT IS FOR VARIABLE LARGE BRACKET. P7=3 P10=THICK. P5=HGT P6=P3
12970	2401	JA=3
12975		IF(J10.EQ.0)J10=5
12977	C  DEFAULT VALUE FOR THICKNESS =5
12980		R4=R4-RBR
12985		J9=0
12990		J5=35
13000	C  THE NUM FOR THE LITTLE END ITEMS
13005	CC	RY=R6-2.1*RSTJ2
13010		R6=3 
13020		R7=0
13030	C DOES LOWER ONE FIRST.  ITEM IS IN 'CLEF3.DMD' ON DAT.LCS
13040		IF(J8.NE.2)CALL CLEFS
13045	C P8=1=BOTTOM 1/2 BRACK. ONLY:  =2=TOP 1/2 ONLY:  0=COMPLETE
13050		R4=R5-RBR
13055		R6=3
13060		R7=-3
13063	C  TURNS IT UPSIDE DOWN.
13067	CC	JA=3
13071		IF(J7.NE.4)GO TO 3401
13073		POS=RA
13074		R4=R4*RJY/RSTJ2
13076	C  TO ADJUST HEIGHT OF BRACK END WHEN STAVES ARE DIFF. SIZES.
13078	3401	IF(J8.NE.1)CALL CLEFS
13080		R3Q=R3Q-12.0*RSTJ2
13090		IF(J7.NE.4)GO TO 407
13100		J7=0
13110		GO TO 140
13155	
13200	4001	IF(R8.EQ.0)R8=.8
13300	C  P8 CAN SET SIZE OF DASH
13400		RD=RD+POS
13410		IF(J7.EQ.1)GO TO 402
13420	C  =1 =VERTICAL DASHES
13430		RA=RHORZ(R6)
13440		RST7=5.96*RSTJ2
13445		RJX=R3Q
13450		GO TO 420
13460	402	RA=POS+R5*RST7
13464		RJY=RD
13467	C  SAVE FOR THICK LINES
13470	420	RJ=R8*RST7
13524	41	L=3
13527		K=2
13530	416	CALL LINES(R3Q,RD,L)
13540		IF(J7.EQ.1)GO TO 412
13550	C  JUMP FOR VERTICAL DASH
13560		IF(R3Q.GE.RA)GO TO 413
13570	C  JUMP IF ALL DONE
13575		R3Q=R3Q+RJ
13580	414	CALL EXCH(L,K)
13590		GO TO 416
13600	412	IF(RD.GE.RA)GO TO 413
13610	C  JUMP IF DONE
13620		RD=RD+RJ
13630		GO TO 414
13640	413	IF(J10.LE.0)RETURN
13650	C  NEXT FOR THICK DASHES
13660		J10=J10-1
13670		IF(J7.EQ.1)GO TO 415
13680		R3Q=RJX
13685		RD=RD+1./DIS
13690		GO TO 41
13700	415	R3Q=R3Q+1./DIS
13705		RD=RJY
13710		GO TO 41
14300	
15700	
15800	407	RX=RD+POS
15810		RY=R5*RST7+POS
15855		IF(J7.EQ.3)GO TO 140
15900		CALL NOZERO(R9)
16000		IF(J7.EQ.-1)GO TO 408
16100	C  FOR 'TR' J7=-2, 'ARPEGG' J7=-1,  STRAIGHT LINES J7=0
16200	CC  WHY THE IFIX????	RJX=IFIX(RHORZ(R6))
16300		RJX=IFIX(ROFF(RHORZ(R6)))
16400	C  ALL THIS CRAP SO IT WILL MATCH UP WITH P2 WHEN NECESSARY.
16500		IF(J7.EQ.0)GO TO 42
16550		RY=R9*RST7+RX
16600		CALL NOZERO(R8)
16620	4041	RZ=RX
16640		RH=RY
16660	C  SAVE FOR THICK WIGGLES
16700		CALL LINES(R3Q,RX,3)
16800	C  DRAWS STRAIGHT LINES. ETC.
16900		R9=R3Q
17000		RJ=RY
17100		RW=3.*RSTJ2*R8
17200		RA=RW*2.5
17300	C  P8=HORZ. WIGGLE SIZE;  P9=VERT. SIZE
17400	404	R9=R9+RA
17500		CALL LINES(R9,RJ,2)
17600		R9=R9+RW
17700		CALL LINES(R9,RJ,2)
17800	405	CALL EXCH(RX,RJ)
17900		IF(R9.LT.RJX)GO TO 404
18000		IF(J10.LE.0)RETURN
18100		RX=RZ+1./DIS
18150		RY=RH+1./DIS
18200		J10=J10-1
18300		GO TO 4041
18400	C  P10= + NUM OF THICKNESSES TO WIGGLE
18500	
18600	408	IF(RX.GT.RY)CALL EXCH(RX,RY)
18800		RZ=R9*RSTJ2*5.96
18900	C  USE P9 TO SET WIGGLE WIDTH.  P8 TO SET HGT.
19000		CALL NOZERO(R8)
19200		RD=R8*RST7*.5
19500		RJ=RD
19600		IF(RD.LT.1.)RD=1.
19700	421	R9=RX
19800		RW=R3Q
19900		RA=RZ+R3Q
20000		CALL LINES(RW,R9,3)
20100	410	R9=R9+RJ
20200		CALL LINES(RA,R9,2)
20300		R9=R9+RD
20400		CALL LINES(RA,R9,2)
20500		CALL EXCH(RA,RW)
20600		IF(R9.LT.RY)GO TO 410
20700		IF(J10.LE.0)RETURN
20800		R3Q=R3Q+1./DIS
20900		J10=J10-1
21000		GO TO 421
21100	C  VERTICAL WIGGLE   P10=+ NUM OF THICKNESSES.
21200	
21300	
21400	C  NEXT IS FOR BEAMS
21500	90	RMINI=RSTJ2
21600		RX=2.7*RSTJ2*5.96
21700	C******************************
21800		R6=RHORZ(R6)
21900		IF(R8.NE.0)GO TO 204
22000		IF(R10.GE.10)GO TO 204
22100		IF(J7)GO TO 204
22200		IF(R9.NE.0)GO TO 1
22300	C  R8=0 AND R9=NUM  -- PUTS NUMBER OUTSIDE BEAM(FOR TRIPLETS, ETC.)
22400	204	IF(R9.NE.0)R9=RHORZ(R9)
22500		IF(J7)GO TO 201
22600	200	IF(J10.LT.10)GO TO 91
22700	C NEXT FOR INNER, PARTIAL BEAMS
22800		R8=RHORZ(R8)
22900		R10=AMOD(R10,10.)
23000		GO TO(2,3,4),J10/10
23100	2	RH=R9+RX
23200		GO TO 1
23300	3	R8=R9-RX
23400	C 10=SHORT PARTIAL LFT→RT., 20=RT.←LFT, 30=TO POS IN P8
23500	4	RH=R8
23600	C  LEFT INNER POS.
23700		GO TO 1
23800	201	J7=-J7
23900	C P8=WIDTH OF TREM. P9=0(SANS OTHER BEAMS) OR =POS.3, P10=DISP.
24000		CALL NOZERO(R10)
24100	C  ALWAYS AT LEAST 1 IN DISPLACEMENT
24200		J10=30
24300	C TO ACTIVATE PARTIAL BEAM SECTION
24400		IF(J9.NE.0)GO TO 202
24500	C  NEXT FOR TREM. WITHOUT OTHER BEAMS.
24600		RH=-1
24700		IF(J7.GE.20)RH=-RH
24800	CC203	R4=R4+R10*RH
24900	CC	CALL CENTX
25000		R5=R4+RH
25100		R9=R3
25200		R6=R3+22.*RMINI
25300	202	IF(R8.EQ.0)R8=4. 
25400		RX=R8*RMINI*2.98
25500		RH=R9+RX
25600		R9=R9-RX
25700		GO TO 1
25800	
25900	91	IF(J8.EQ.0)GO TO 1
26000		IF(J8.GT.0)GO TO 92
26100	C FOR J8=-(10+DN) OR -(20+DN)
26200		R9=R3+RX
26300		IF(J8.LE.-20)R9=R6-RX
26400	192	J8=-J8
26500	92	IF(J10.EQ.0)J10=MOD(J8,10)
26600	CC??? 4/75	J8=J8-J10
26700		IF(J10.EQ.0)J10=1
26800		R10=J10
26900	C IF P8 NEG, P9 IS AUTOMATIC, ALSO P10 IF NEEDED.
27000	1	IF(IABS(J4).LT.100)GO TO 97
27100		RMINI=.6*RSTJ2
27200		R5=AMOD(R5,100.0)
27300	C   SPACE BETWEEN BEAMS
27400	97	RJ=RMINI*11.
27500		RW=RMINI*RHGT
27600	C  DIST. UP OR DOWN FROM NOTE HEAD.
27700		RJA=R10*RJ
27800	C  DISPLACEMENT
27900		RD=R9
28000	C  POSITION 3
28100		RJX=CENTR-RW+RJA
28200	C  FINAL HEIGHT OF LEFT SIDE
28300	C  NEG R7=TREMOLO
28400		RX=MOD(J7,10)
28500		JJ2=J7-20
28600		RA=R6
28700	C  HORIZANTAL DIST.
28800		RJY=R5*RST7+POS-RST18-RW+RJA
28900	C   VERTICAL POS OF RIGHT SIDE.
29000		RW=R14*RMINI
29100		RY=1.
29200		IF(J7.GE.20)GO TO 98 
29300	C JUMP IF STEMS ARE DOWN
29400		RY=-RY
29500	C  FOR  THICKENING INCR.
29600		JJ2=J7-10
29700		RJ=-RJ
29800		RJA=RMINI*R2HGT-2.*RJA
29900		RJX=RJX+RJA
30000		RJY=RJY+RJA
30100		R3Q=R3Q+RW
30200	C  POSITION 1
30300		RA=RA+RW
30400	C  POSITION 2
30500		RD=RD+RW
30600	C******************************
30700		RH=RH+RW
30800	98	RSTJ2=RSTJ2*RBM
30900	C  RBM BRINGS LINES OF BEAMS CLOSER TOGETHER. (=.83)
31000	93	IF(JJ2.GT.RX)GO TO 94
31100		IF(J10.GE.10)GO TO 7
31200	C**********************
31300		IF(J8.EQ.0)GO TO 94
31400		R3=RW
31500		IF(J9.EQ.0)GO TO 292
31600	 	IF(J8.GE.20)GO TO 193
31700	293	RX=R3Q-RD
31800		GO TO 194
31900	7	RHX=RH-R3Q
32000		R3=RD-R3Q
32100		GO TO 292
32200	193	RX=RD-RA
32300	194	R3=ABS(RX)
32400	292	DISX=ABS(R3Q-RA)
32500		HGT=RJX-RJY
32600		IF(J10.GE.10)HGT1=HGT*RHX/DISX
32700	C**********************
32800		R3=R3/DISX
32900	195	HGT=HGT*R3
33000	196	L=J8/10
33100		J8=0
33200		IF(J10.GE.10)GO TO 8
33300	C***************
33400		IF(L.EQ.1)GO TO 95
33500	C   BEAM LFT=1,  RT=2   (PARAM 8=10 OR 20)
33600		R3Q=RD
33700		RJX=RJY+HGT
33800		GO TO 94
33900	C**************
34000	8	R3Q=RH
34100		RA=RD
34200		RJY=RJX-HGT
34300		RJX=RJX-HGT1
34400		GO TO 94
34500	95	RA=RD
34600		RJY=RJX-HGT
34700	94	L=7.*RMINI
34800	930	RC=0
34900	C  MINI LINES HAVE .2 SMALLER BEAMS.  MAYBE CHANGE THIS??
35000		CALL LINES(R3Q,RJX,3)
35100		DO 941 K=1,L
35200		CALL BMS
35300		IF(PLT.GE.0)GO TO 940
35400		RC=RC+RY
35500	C FOR THICKENING.
35600		CALL BMS
35700		CALL EXCH(RA,R3Q)
35800	941	CALL EXCH(RJY,RJX)
35900		CALL BMS
36000	C  DRAWS 5 LINES FOR BEAMS.
36100	940	JJ2=JJ2-1
36200		IF(JJ2.LE.0)GO TO 942
36300	C  IF P7=10 OR 20 ONE BEAM WILL APPEAR.
36400		RJY=RJY+RJ
36500		RJX=RJX+RJ
36600		GO TO 930
36700	
36800	942	IF(R8.NE.0)RETURN
36900		IF(R9.EQ.0)RETURN
37000		IF(R10.GE.30)RETURN
37100	C FOR NUMBERS OUTSIDE BEAMS
37200		RSTJ2=RMINI
37300		RD=-10.
37500		IF(R7.LT.20)RD=8.3
37800	943	J3=R3Q+(RA-R3Q)/2.
37900		R6=1.
37950		R4=AMOD(R4,100.)
38000		R4=R4+(R5-R4)/2.+RD
38100		R7=1
38200	C ITALICS
38300		CALL MAKNUM(R9)
38400		RETURN
38500	
38600	100	RA=0
38700	C  FOR STAFF LINES: 8, POS 1, HGT(3 TO -3), UP-DOWN(NT #S), 
38800	C  P5=SIZE, P6=2ND POS., P7=(1=INVIS.), P8=SPACER, P9=INST. NAME
38900	C  P6=SIZE FACTOR, IF P7≠0 STAFF IS INVIS. 
39000	C  PLT =-2 MAKES HEAVY STAFF.(FOR XGP)
39100		IF(R5.EQ.0)R5=RSTFAC(J2)
39200		CALL NOZERO(R5)
39300		RSTFAC(J2)=R5
39400		RX=(J2+3)*123-369.+R4*7.*R5
39600	CC	RC=R5
39700		STFF(J2)=RX
39800		RX=RX+RTF*R5
39900	C  FOR RTF SEE DATA
39930		RA=RX
40000	C  FOR 2 PASS PLOTTING
40100		RJ=RHORZ(R6)
40200		IF(R6.EQ.0)RJ=596
40300		R5=R5*14.
40400		IF(R8.EQ.0)GO TO 68
40500		IF(PLT)GO TO 68
40600		RZ=RX+R8*167.
40700	C  167 IS A MAGIC NUMBER!!  PUTS LINE ON DPY.
40800		CALL LINX(R3,RZ,RJ,RZ)
40900	C  SHOWS WHERE NEXT STAFF 0 WILL BE.
41000	68	IF(J7.EQ.0)GO TO 101
41100		IF(PLT.EQ.0)CALL LINES(-596.,RX,3)
41200	C  TO ACTIVATE DPY BUFFER
41300		RETURN
41400	101	DO 6 K=1,5
41500		RZ=RJ
41600		RW=R3
41700		IF(K.EQ.2)GO TO 66
41800		IF(K.NE.4)GO TO 67
41900	66	CALL EXCH(RW,RZ)
42000	67	CALL LINX(RZ,RX,RW,RX)
42100	6	RX=RX+R5
42200		IF(RA.EQ.1000)RETURN
42300		IF(PLT.NE.-2)RETURN
42400		RX=RA-1./RHT
42500	CC	R5=RC
42600		RA=1000
42700		GO TO 101
42800		END
42900	
43000	CC	SUBROUTINE BMS
43100	CC	COMMON/STF/RSTFAC(-3/4),RSTJ2/BM/RA,RC,RJY
43200	CC	CALL LINES(RA,RJY+RC*RSTJ2,2)
43300	CC	END
43400	
43500		SUBROUTINE METER
43600	      COMMON R2,JA,CENTR,J2,RJQ(20),J3,JQ(19)/STF/RSTFAC(-3/4),RSTJ2
43700		EQUIVALENCE (R4,RJQ(2)),(R7,RJQ(5)),(R6,RJQ(4)),(R5,RJQ(3))
43800		1,(R8,RJQ(6))
43900	
44000	C  PARAMS  18 / STF / POS / VERT HGT./ TOP NUM/ BOT NUM/ SIZE FAC.
44100	
44200		CALL NOZERO(R7)
44300		JZ=J3
44400		RY=R4+8.*R7
44500	C  HEIGHT
44600		RW=R6
44700	C  BOTTOM NUM
44800	C  P5=TOP NUM
44900		R6=R7
45000		RR6=R6
45100	C  SIZE
45200	C  FOR BDR40  -- OR =1
45300		M=0
45400		R4=RY
45500	2	R7=0
45600	C  R7=0 FOR BDR FONT??
45700	CC	IF(R5.NE.99)GO TO 1
45800		IF(R5.NE.99)GO TO 3
45900	C  99 AS METER = 'C'
46000		M=-1
46100		R5=9999.
46200		GO TO 3
46300	C  TO CENTER 12S AND 16S
46400	3	CALL MAKNUM(R5)
46500		IF(M)RETURN
46600	C  STICK AROUND FOR BOTTOM NUM
46700		M=-1
46800		R4=RY-4.*RR6
46900		R6=RR6
47000		R5=RW
47100	C  GET BOTTOM NUM
47200		J3=JZ
47300		R8=0
47400		GO TO 2
47500		END
47600	
47700	CF	SUBROUTINE RNOTE(X)
47800	CF	COMMON /PTR/PWDS(250),ITEM,L,I,IX/XRN/RN(4000)
47900	CF	X=RN(IFIX(PWDS(IFIX(AMOD(X,1000.))))+2)
48000	CF	END
48100	
48200		SUBROUTINE MAKNUM(RNUM)
48300		COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20)/STF/RSTFAC(-3/4),RSTJ2
48400		EQUIVALENCE (J3,JQ(1)),(R4,RJQ(2)),(R8,RJQ(6)),(R7,RJQ(5))
48500	     1,(R6,RJQ(4)),(R5,RJQ(3)),(R7,RJQ(5)),(JQ(15),B),(JQ(16),C)
48600		1 ,(J8,JQ(6)),(J10,JQ(8)),(R3,RJQ(1)),(J5,JQ(3)),(RJY,JQ(19))
48700		1 ,(J7,JQ(5)),(J6,JQ(4)),(R9,RJQ(7))
48800		DATA RS/10.0/,RBX/1.0/
48900		RB8=R8
49000		J3X=J3
49100	C P7=0=BDR40; =1=BDI40; =2=PRIM.
49200		CALL NOZERO(R6)
49300		R5=R6
49400	C  UPPER CASE - BDR40
49500		R6=480000.00+(R7+50.)*100.
49600		R7=999999.99
49700	C  BLANKS
49800		R8=R7
49900		IF(RNUM.NE.9999.)GO TO 2
50000	C  NEXT FOR 'C'OMMON TIME
50100		RNUM=12.
50200	C  MAKES A 'C'
50300		R4=R4-2.2
50400	C  .2 FOR BAD POS. OF LETTERS
50500		GO TO 4
50600	
50700	2	ONE=0 
50800		IF(RNUM.EQ.1.)ONE=3.
50900		IF(RNUM.GT.9.)GO TO 3
51000	C  JUMP FOR 2 OR 3 DIGIT NUMBER
51100	4	R6=R6+RNUM+.47
51200	C  PUTS BLANK ON END (.47)
51300		GO TO 1
51400	
51500	3	RJY=10.
51600		IF(RNUM.GE.100.)RJY=100.
51700		B=IFIX(RNUM/RJY)
51800		C=AMOD(RNUM,RJY)
51900		IF(RNUM.LT.100)GO TO 7
52000		D=IFIX(C/10.)
52100		C=AMOD(C,10.)
52200		IF(C.EQ.1.)ONE=ONE+3.
52300		R7=C*10000.+9999.99
52400		C=D
52500	7	R6=R6+B+C/100.
52600		IF(B.EQ.1.)ONE=ONE+3.
52700		IF(C.EQ.1.)ONE=ONE+3.
52800		B=R5
52900		IF(RNUM.GE.100.)B=B*2
53000		J3=J3-RS*RSTJ2*B
53100	C  FOR 2 DIGIT NUMBER
53200	CCC	IF(RNUM.GE.20.)GO TO 6
53300	CCC	IF(JA.EQ.18)GO TO 6
53400	CCC	RJY=5.6
53500	CCC	IF(RNUM.GT.11.)RJY=3.
53600	C  ADJUSTS FOR 11, ETC.
53700	CCC	J2=J2+RJY*R5*RSTJ2
53800	CC6	J3=J2
53900	1	J3=J3+ONE*R5*RSTJ2
54000	C CENTERS THE NUMBER '1'
54100		CALL ALPHA
54200		J3=J3X
54300		IF(RB8.EQ.0)RETURN
54400	C NEXT FOR CIRCLES AND BOXES AROUND NUMBERS.
54500		R3=J3-R5
54600		IF(J10.EQ.0)J10=1
54700	C  USE J10 FOR EVEN THICKER BOX AND CIRC.
54800		IF(RNUM.GT.9)R3=R3+R5*RBX
54900	C  TO SET CENTER
55000		IF(RB8.EQ.2)GO TO 5
55100		R4=R4+R5+.1+.05/R5
55150	C  END OF ABOVE IS FOR SMALL CIRCLES.
55200		B=4.5
55300		IF(RNUM.GE.100.)B=5.5
55400		R5=R5*B
55500		JA=12
55600		J6=0
55700		J7=0
55800		J8=J10
55900		CALL CENTX
56000		CALL SLUR
56100		RETURN
56200	
56300	5	JA=4
56400		B=6
56500		R9=0
56600		IF(RNUM.LT.100.)GO TO 8
56700		B=10.
56800		R9=R5*6.
56900	C  MAKES RECTANGLE IF ≥100
57000	8	R4=R4+R5*.7+.1
57100		R8=R5*B
57200		J5=50
57300		CALL ITMSUB
57400	C  RETURNS ORIG. HORIZ. POS.
57500		END
57600	C  MAKES ONLY 1 TO 3 DIGIT NUMS NOW.  EXPAND LATER.
57700	
57800	CC	FUNCTION IABS(N)
57900	C  BECAUSE IABS IN LIB40 HAS A BUG.
58000	CC	IABS=N
58100	CC	IF(N)IABS=-N
58200	CC	END
58300	
58400	CF	SUBROUTINE DRWNT(RMINI)
58500	CF	COMMON /STF/RSTFAC(-3/4),RSTJ2
58600	CF	COMMON R2,JA,CENTR,J2,RJQ(20),JQ(20)
58700	CF	EQUIVALENCE (JE,JQ(3)),(RJD,RJQ(2)),(R6,RJQ(4)),
58800	CF	1 (JG,JQ(5)),(R7,RJQ(5)),(RJE,RJQ(3)),(RJZ,RJQ(20))
58900	CF	1 ,(JI,JQ(7)),(R9,RJQ(7)),(JH,JQ(6))
59000	CF	RJX=CENTR
59100	CF	JH=0
59200	C  JH=0 SO IT WILL FILL. (P8 IN 'CLEFS')
59300	CC	CENTR=CENTR-21.*RSTJ2
59400	CF	RA=R6
59500	CF	R6=.5*RMINI/RSTJ2
59600	CF	R7=R6
59700	CF	RJD=RJZ-3
59800	CCXX	IF(RSTJ2.NE.RMINI)RJD=RJZ+.43*(RJZ-3.)-.3
59900	C  ADJUSTS POSITION FOR MINI ACCIDENTALS (..??!!)
60000	CF	JI=0
60100	CF	CALL CLEFS
60200	CF	JI=R9
60300	C  ↑↑↑↑↑↑ NEEDED??
60400	C  FIX THIS???? ↑↑↑↑↑
60500	C  FOR WHITE NOTES AND ACCIS ON PLOTTER.
60600	CF	CENTR=RJX
60700	CF	R6=RA
60800	CF	R7=JG
60900	CF	JE=RJE
61000	CF	END
61100	
61200	CC	FUNCTION RHORZ(R)
61300	CC	RHORZ=R*5.96-596.
61400	CC	END
61500	
61600	CF	SUBROUTINE RDRAW(I,S,XY,X,R3,CENTR,RMINI)
61700	C   TO X,Y INTO ONE WORD
61800	CF	DIMENSION XY(1)
61900	CF	DO 2 K=I,IFIX(S)
62000	CF	L=2
62100	CF	Y=XY(K)
62200	CF	IF(Y.LT.1000.)GO TO 3
62300	CF	L=3
62400	CF	Y=Y-1000.
62500	C   >1000 = INVIS. LINE
62600	CF3	M=Y
62700	CF	Y=(Y-M)*1000.
62800	CF	IF(Y.GT.100.)Y=100-Y
62900	C   Y NUMBERS .GT.100 ARE NEG.
63000	CF	B=Y*X+CENTR
63100	CF	IF(M.GT.60)M=100-M
63200	CF	A=M*RMINI+R3
63300	CF2	CALL LINES(A,B,L)
63400	CF	END
63500		
63600	CC	FUNCTION EEXP(X,Y)
63700	CC	EEXP=X**Y
63800	CC	END